#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <errno.h>

void pr_mask(const char *str)
{
    sigset_t sigset;
    int errno_save, i;

    errno_save = errno;
    if (sigprocmask(0, NULL, &sigset) < 0)
    {
        perror("sigprocmask error");
        exit(0);
    }

    printf("%s", str);

    for (i = 1; i <= SIGRTMAX; i ++)
        if (sigismember(&sigset, i))
            printf("<signal %d %s> ", i, sys_siglist[i]);


    printf("\n");
    errno = errno_save;
}


int main(int argc, char const* argv[])
{
    sigset_t sigset;

    pr_mask("before mask:");

    sigemptyset(&sigset);
    sigaddset(&sigset, SIGINT);
    sigprocmask(SIG_BLOCK, &sigset, NULL);
    
    pr_mask("after mask: ");

    return 0;
}

